package io.github.frailty9.crserver.model

interface BaseModel {
    var id: Long?
    var version: Int?
    var deleted: Int?
}

/**
 * 擦除敏感字段值
 *
 * 利用kotlin拓展函数, 实现不需要在接口声明泛型参数, 即可让返回值类型不变
 */
fun <T : BaseModel> T.toDto(): T {
    // 复用原逻辑：擦除敏感字段
    this.version = null
    this.deleted = null
    // 返回当前实例（类型为T，即子类自身）
    return this
}
